# import asyncio

# async def corutine_1():
#     print('Coroutine 1 is done')

# async def corutine_2():
#     print('Coroutine 2 is done')

# async def corutine_3():
#     print('Coroutine 3 is done')

# async def main():
#     tasks = [asyncio.create_task(corutine_1()),
#              asyncio.create_task(corutine_2()),
#              asyncio.create_task(corutine_3())]
#     await asyncio.gather(*tasks)

# asyncio.run(main())
##############################################
# import asyncio

# async def print_with_delay(num: int):
    
#     print(f'Coroutine {num} is done')

# async def main():
#     tasks = [asyncio.create_task(print_with_delay(num)) for num in range(10)]
#     await asyncio.sleep(1)
#     await asyncio.gather(*tasks)

# asyncio.run(main())
# ################Другие варианты решений################
# import asyncio


# async def coroutine(x):
#     await asyncio.sleep(1)
#     print(f"Coroutine {x} is done")


# async def main():
#     #Вариант решения 1
#     [await asyncio.create_task(coroutine(x)) for x in range(10)]

#     # Вариант решения 2
#     # for x in range(10):
#     #     await asyncio.create_task(coroutine(x))

#     # Вариант решения 3
#     # for x in range(10):
#     #     task = asyncio.create_task(coroutine(x))
#     #     await task


# asyncio.run(main())
#####################################
# import asyncio

# max_counts = {
#     "Counter 1": 13,
#     "Counter 2": 7
# }

# counters = {
#     'Counter 1': 0,
#     'Counter 2': 0
# }

# async def counter(name_counter: str, pause: int):
#     while counters[name_counter] < max_counts[name_counter]:
#        counters[name_counter] += 1
#        print(f"{name_counter}: {counters[name_counter]}")
#        await asyncio.sleep(pause)

# async def main():
#     task_1 = asyncio.create_task(counter('Counter 1', 1))
#     task_2 = asyncio.create_task(counter('Counter 2', 1))

#     await task_1, task_2

# asyncio.run(main())
#####################################

import asyncio

max_counts = {
    "Counter 1": 10,
    "Counter 2": 5,
    "Counter 3": 15,
}

counters = {
    'Counter 1': 0,
    'Counter 2': 0,
    'Counter 3': 0
}

delays = {
    "Counter 1": 1,
    "Counter 2": 2,
    "Counter 3": 0.5
}

async def counter(name_counter: str, pause: float):
    while counters[name_counter] < max_counts[name_counter]:
       counters[name_counter] += 1
       print(f"{name_counter}: {counters[name_counter]}")
       await asyncio.sleep(pause)

async def main():
    tasks = [asyncio.create_task(counter(name_counter, delays[name_counter]))
             for name_counter in counters]
    
    await asyncio.gather(*tasks)


asyncio.run(main())